package com.education.ai.dao;

import com.education.ai.entity.Teacher;

import java.util.List;
import java.util.Optional;

/**
 * 教师数据访问接口
 */
public interface TeacherDao {
    
    /**
     * 保存教师信息
     */
    Teacher save(Teacher teacher);
    
    /**
     * 根据ID查询教师
     */
    Optional<Teacher> findById(Long id);
    
    /**
     * 根据教师ID查询教师
     */
    Optional<Teacher> findByTeacherId(String teacherId);
    
    /**
     * 根据用户名查询教师
     */
    Optional<Teacher> findByUsername(String username);
    
    /**
     * 根据教师邮箱查询教师
     */
    Optional<Teacher> findByEmail(String email);
    
    /**
     * 根据教师姓名模糊查询
     */
    List<Teacher> findByNameContaining(String name);
    
    /**
     * 根据学科查找教师
     */
    List<Teacher> findBySubject(String subject);
    
    /**
     * 根据学科和姓名查找教师
     */
    List<Teacher> findBySubjectAndNameContaining(String subject, String name);
    
    /**
     * 根据手机号查询教师
     */
    Optional<Teacher> findByPhone(String phone);
    
    /**
     * 判断教师工号是否存在
     */
    boolean existsByTeacherId(String teacherId);
    
    /**
     * 判断邮箱是否存在
     */
    boolean existsByEmail(String email);
    
    /**
     * 判断手机号是否存在
     */
    boolean existsByPhone(String phone);
    
    /**
     * 获取所有教师
     */
    List<Teacher> findAll();
    
    /**
     * 更新教师信息
     */
    boolean update(Teacher teacher);
    
    /**
     * 删除教师
     */
    boolean deleteById(Long id);
    
    /**
     * 查询总数
     */
    long count();
    
    /**
     * 获取当前最大的教师工号
     * @return 最大教师工号
     */
    String getMaxTeacherId();
} 